#include "comm.hpp"
#include <unistd.h>

int main(void)
{
    key_t k = getKey();
    // std::cout << "key:" << k << std::endl;    // cpp 里面不好打印 k 的 16 进制形式
    printf("key: 0x%x\n", k); // key
    int shmid = getShm(k);    // server 端是 createShm(k), client 是 getShm(k)
    printf("shmid: %d\n", shmid);

    sleep(5);

    // attachShm(shmid) 返回共享内存的首地址
    char *start = (char *)attachShm(shmid);
    printf("attach success, arrress start: %p\n", start); // 可以看到 nattch 增加 1

    // 使用
    const char *message = "hello server";
    pid_t id = getpid();
    int cnt = 1;
    // char buffer[];   // 不用，直接用 start
    while (true)
    {
        sleep(1);
        snprintf(start, MAX_SIZE, "%s[pid:%d][消息编号:%d]", message, id, cnt++);
        // snprintf(buffer, sizeof(buffer), "%s[pid:%d][消息编号:%d]", message, id, cnt++);
        // memcpy(start, buffer, strlen(buffer)+1);
        // pid, count, message
    }

    // 去链接
    detachShm(start);

    // done

    return 0;
}
